作者:once | 来源:互联网 | 2023-06-20 17:46
篇首语:本文由编程笔记#小编为大家整理,主要介绍了异常处理数组相关的知识,希望对你有一定的参考价值。
前言
这里总结的Golang 笔记只适合有点编程基础的人看,比如Java
错误处理
golang之中的错误处理与Java之中异常处理有异曲同工之妙,Java之中是try…catch…finally,go语言之中defer…panic…recover。go语言之中抛出一个painc的异常,然后在defer之中通过recover捕获这个异常,然后正常处理。
错误处理demo
func main()
test()
func test()
var i = 10
var j = 0
defer func()
err := recover()
if err != nil
fmt.Println("err:", err)
()
res := i / j
fmt.Println(res)
处理结果:
自定义错误处理
painc遇见问题 painc会终止程序,你没有在程序中添加任何其他措施的话,就打印painc的详细或者内容,然后程序停止运行。但是前面无论产生什么错误都不会影响到defer的执行。
painc使用
func main()
defer func()
fmt.Println("hello1")
panic("defer panic")
fmt.Println("hello2")
()
fmt.Println("hello3")
panic("outer panic")
fmt.Println("hello4")
从如上的结果可以看出来,这里先是打印了3,在出现panic之后程序即将终止,但是会执行defer语句块,然后打印1,最后打印panic外部,最后打印了内部的panic。
自定义错误
使用error.New() 和 panic 一起实现
func main()
err := compute(1, 2)
if err != nil
panic(err)
fmt.Println("正常执行")
func compute(i int, j int)(error error)
if i &#43; j < 10
return errors.New("ij的值太小了")
return nil
打印出错误信息&#xff0c;当ij的值大于10的时候返回一个nil打印正常执行。
数组
定义
数组是一个由固定长度的特定类型元素组成的序列&#xff0c;一个数组可以由零个或多个元素组成。因为数组的长度是固定的&#xff0c;所以在Go语言中很少直接使用数组。Golang之中数组是一个值类型与java之中数组还是有区别&#xff0c;java之中是引用类型。
var 数组变量名 [元素数量]Type
数组变量名 :&#61; [...]Type元素
var 数组变量名 &#61; [...]Type元素
数组遍历
打印索引和元素
func main()
var arrs &#61; [3]int 3, 2, 1
for index, val :&#61; range arrs
fmt.Printf("第%d个元素的值为&#xff1a;%d\\n", index, val)
仅打印元素
func main()
var arrs &#61; [3]int 3, 2, 1
for i:&#61;0; i<len(arrs); i&#43;&#43;
fmt.Println(arrs[i])
数组基本数据类型
Java之中数组之中是引用类型&#xff0c;在传递过程之中拷贝了数组第一个元素的地址&#xff0c;然后对其数组做变更&#xff0c;数据会发生变化。从以下的代码可以看出golang数组和java数组的区别。
public class TestArray
public static void main(String[] args)
int[] arr &#61; new int[6];
for(int i &#61; 0; i < arr.length; i&#43;&#43;)
arr[i] &#61; i&#43;1;
System.out.println("arr[0]: " &#43; arr[0]);
TestArray testArray &#61; new TestArray();
testArray.swap(arr);
System.out.println("arr[0]: " &#43; arr[0]);
public void swap(int[] arr)
arr[0] &#61; 0;
golang数组是基本数据类型&#xff0c;在进行值传递的时候&#xff0c;只是拷贝这个数组的值&#xff0c;然后修改数组&#xff0c;原数组中值不发生变化&#xff0c;是一个新的数组。
package main
import "fmt"
func main()
var arr [6]int
for i:&#61;0;i<len(arr);i&#43;&#43;
arr[i] &#61; i &#43; 1
fmt.Println()
fmt.Printf("arr[0]: %d", arr[0])
swap(arr)
fmt.Println()
fmt.Printf("arr[0]: %d", arr[0])
func swap(arr [6]int)
arr[0] &#61; 0
从如上结果可以看出索引为0这个位置元素的值未发生变化。但是如果想要修改数组的话可以根据指针进行修改。
数组内存布局
golang一般会在栈区开辟一段连续的空间为数组的空间。
如果文章内容有错误&#xff0c;还请大佬们指导&#xff0c;防止误人子弟。继续冲冲冲&#xff01;